/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package DA;

import BO.Cantones;
import BO.CentroCostos;
import BO.ViaticoPorDia;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Daniel.Cerdas
 */
public class DAViaticoPorDia {
    String conexionString = "jdbc:sqlserver://localhost:1433;" +
            "databaseName=Viaticos;user=sa; password=admin;";        
    
    Connection con = null;
    PreparedStatement pstmt = null;
    Statement stmt= null;
    ResultSet rs = null;
    
    
    public  void insertarViatico(ViaticoPorDia Viatico) throws SQLException{
    try {   
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        con = DriverManager.getConnection(conexionString);
      
        String SQL = "insert into DesgloseTabla values (?,?,?,?,?,?,?,?,?,?,?);";
        pstmt = con.prepareStatement(SQL);
        pstmt.setDate(1,convertJavaDateToSqlDate(Viatico.getFecha()));
        pstmt.setInt(2,Viatico.getIDCanton());
        pstmt.setString(3, Viatico.getHoraEntrada());
        pstmt.setString(4, Viatico.getHoraSalida());
        pstmt.setDouble(5, Viatico.getDesayuno());
        pstmt.setDouble(6, Viatico.getAlmuerzo());
        pstmt.setDouble(7, Viatico.getCena());
        pstmt.setDouble(8, Viatico.getHospedaje());
        pstmt.setDouble(9, Viatico.getTotalDiario());
        pstmt.setString(10, Viatico.getIDCentroCosto());
        pstmt.setInt(11,Viatico.getNumero());
        
        pstmt.executeUpdate();
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(DAFuncionarios.class.getName()).log(Level.SEVERE, null, ex);
    }
     finally {
        if (pstmt != null) { pstmt.close(); }
    }
   
   
    
    }
    
    public DefaultTableModel obtenerViaticos(){
        try{          
           DefaultTableModel modelo=new DefaultTableModel();
           String query = "";
        query = "select  * from DesgloseTabla;";
        
         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        con = DriverManager.getConnection(conexionString);
        
                             
           pstmt = con.prepareStatement(query);
           pstmt.execute();
           ResultSet rs=pstmt.getResultSet();
           ResultSetMetaData metaDatos = rs.getMetaData();
           int numeroFila=0;
           int numeroColumnas = metaDatos.getColumnCount();
           Object[] etiquetas = new Object[]{"Fecha","IdCanton","Hora Salida","Hora Entrada","Desayuno","Almuerzo","Cena","Hospedaje","Total Diario","Centro Costo","Consecutivo"};

//           for (int i = 0; i < numeroColumnas; i++){
//               etiquetas[i] = metaDatos.getColumnLabel(i + 1).toUpperCase();
//           }
           modelo.setColumnIdentifiers(etiquetas);

           while (rs.next()){
               // Se crea y rellena la fila para el modelo de la tabla.
               Object[] datosFila = new Object[modelo.getColumnCount()];
               for (int i = 0; i < modelo.getColumnCount(); i++){                 
                   datosFila[i] = rs.getObject(i + 1);
               }
               modelo.addRow(datosFila);                            
               numeroFila++;                          
           }                     
           return modelo;
         }catch (Exception e){
             System.out.print("\n"+e);
             return null;
         }
    }
    
    
    
    public ArrayList obtenerViaticosPorOrden (int NumeroOrden) throws SQLException
    {
        ArrayList lista= new ArrayList();
    try {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        con = DriverManager.getConnection(conexionString);
        stmt= con.createStatement();
        String SQL = "select  * from DesgloseTabla where NumeroOrden ="+NumeroOrden+";"; 
        rs = stmt.executeQuery(SQL);
        while ( rs.next() ) {
            Date Fecha = rs.getDate("Fecha");
            int IdCanton = rs.getInt("IdCanton");
            String HoraSalida=rs.getString("HoraSalida");
            String HoraEntrada=rs.getString("HoraEntrada");
            double Desayuno = rs.getDouble("Desayuno");
            double Almuerzo = rs.getDouble("Almuerzo");
            double Cena = rs.getDouble("Cena");
            double Hospedaje = rs.getDouble("Hospedaje");
            double TotalDiario = rs.getDouble("TotalDiario");
            String IdCentroCosto = rs.getString("IdCentroCosto");
            int Numero=rs.getInt("Numero");
            
            ViaticoPorDia Viatico = new ViaticoPorDia(Fecha, IdCanton, HoraSalida, HoraEntrada, Desayuno, Almuerzo, Cena, Hospedaje, TotalDiario, IdCentroCosto, Numero);
    
            lista.add(Viatico);
        }
        con.close();
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(DAFuncionarios.class.getName()).log(Level.SEVERE, null, ex);
    }
    
    return lista;
        
    }
    public ArrayList obtenerCantones () throws SQLException
    {
        ArrayList lista= new ArrayList();
    try {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        con = DriverManager.getConnection(conexionString);
        stmt= con.createStatement();
        String SQL = "select  * from Cantones;"; 
        rs = stmt.executeQuery(SQL);
        while ( rs.next() ) {
            int IdCanton = rs.getInt("IdCanton");
            String NombreCanton= rs.getString("NombreCanton");
            double MontoHospedaje = rs.getDouble("MontoHospedaje");
            boolean Almuerzo = rs.getBoolean("Almuerzo");
            Cantones Canton = new Cantones(IdCanton, NombreCanton, MontoHospedaje, Almuerzo);           
            lista.add(Canton);
        }
        con.close();
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(DAFuncionarios.class.getName()).log(Level.SEVERE, null, ex);
    }
    
    return lista;
    } 
     public ArrayList obtenerCentroCosto () throws SQLException
    {
        ArrayList lista= new ArrayList();
    try {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        con = DriverManager.getConnection(conexionString);
        stmt= con.createStatement();
        String SQL = "select  * from CentrosCostos;"; 
        rs = stmt.executeQuery(SQL);
        while ( rs.next() ) {
            String IdCanton = rs.getString("IdCentroCosto");
            String NombreCanton= rs.getString("Proyecto");
            CentroCostos Centro = new CentroCostos(NombreCanton, IdCanton);         
            lista.add(Centro);
        }
        con.close();
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(DAFuncionarios.class.getName()).log(Level.SEVERE, null, ex);
    }
    
    return lista;
    } 
     public java.sql.Date convertJavaDateToSqlDate(java.util.Date date) {
    return new java.sql.Date(date.getTime());
}
}
